package logger

import (
	"go.uber.org/zap"
	"go.uber.org/zap/zapcore"
)

func Desugar() *zap.Logger {
	return zapLogger.Desugar()
}

func Named(name string) *zap.SugaredLogger {
	zapLogger = zapLogger.Named(name)
	return zapLogger
}

func WithOptions(opts ...zap.Option) *zap.SugaredLogger {
	zapLogger = zapLogger.WithOptions(opts...)
	return zapLogger
}

func With(args ...interface{}) *zap.SugaredLogger {
	zapLogger = zapLogger.With(args...)
	return zapLogger
}

func Level() zapcore.Level {
	return zapLogger.Level()
}
func Debug(args ...interface{}) {
	zapLogger.Debug(args...)
}
func Info(args ...interface{}) {
	zapLogger.Info(args...)
}
func Warn(args ...interface{}) {
	zapLogger.Warn(args...)
}
func Error(args ...interface{}) {
	zapLogger.Error(args...)
}
func DPanic(args ...interface{}) {
	zapLogger.DPanic(args...)
}
func Panic(args ...interface{}) {
	zapLogger.Panic(args...)
}
func Fatal(args ...interface{}) {
	zapLogger.Fatal(args...)
}

func Debugf(template string, args ...interface{}) {
	zapLogger.Debugf(template, args...)
}
func Infof(template string, args ...interface{}) {
	zapLogger.Infof(template, args...)
}
func Warnf(template string, args ...interface{}) {
	zapLogger.Warnf(template, args...)
}
func Errorf(template string, args ...interface{}) {
	zapLogger.Errorf(template, args...)
}
func DPanicf(args ...interface{}) {
	zapLogger.DPanic(args...)
}
func Panicf(template string, args ...interface{}) {
	zapLogger.Panicf(template, args...)
}
func Fatalf(template string, args ...interface{}) {
	zapLogger.Fatalf(template, args...)
}
func Debugw(msg string, keysAndValues ...interface{}) {
	zapLogger.Debugw(msg, keysAndValues...)
}
func Infow(msg string, keysAndValues ...interface{}) {
	zapLogger.Infow(msg, keysAndValues...)
}
func Warnw(msg string, keysAndValues ...interface{}) {
	zapLogger.Warnw(msg, keysAndValues...)
}
func Errorw(msg string, keysAndValues ...interface{}) {
	zapLogger.Errorw(msg, keysAndValues...)
}
func DPanicw(msg string, keysAndValues ...interface{}) {
	zapLogger.DPanicw(msg, keysAndValues...)
}
func Panicw(msg string, keysAndValues ...interface{}) {
	zapLogger.Panicw(msg, keysAndValues...)
}
func Fatalw(msg string, keysAndValues ...interface{}) {
	zapLogger.Fatalw(msg, keysAndValues...)
}
func Debugln(args ...interface{}) {
	zapLogger.Debugln(args...)
}
func Infoln(args ...interface{}) {
	zapLogger.Infoln(args...)
}
func Warnln(args ...interface{}) {
	zapLogger.Warnln(args...)
}
func Errorln(args ...interface{}) {
	zapLogger.Errorln(args...)
}
func DPanicln(args ...interface{}) {
	zapLogger.DPanic(args...)
}
func Panicln(args ...interface{}) {
	zapLogger.Panicln(args...)
}
func Fatalln(args ...interface{}) {
	zapLogger.Fatalln(args...)
}
func Sync() error {
	return zapLogger.Sync()
}
